import unittest

import requests

from api.api_register_login import ApiRegisterLogin
from api.api_tender import ApiTender
from api.api_approve_trust import ApiApproveTrust
from utils import read_json, html_parser
from utils import GetLog
log = GetLog.get_logger()


class TestTenderList(unittest.TestCase):

    def setUp(self) -> None:
        self.session = requests.session()
        self.reg = ApiRegisterLogin(self.session)
        self.approve = ApiApproveTrust(self.session)
        self.tender = ApiTender(self.session)

    def tearDown(self) -> None:
        self.session.close()

    def test01_tender_list(self):
        random = 0.123
        phone = "17655555559"
        img_code = 8888
        phone_code = 666666
        password = "test123"
        amount = 1000
        # 获取图片验证码成功（随机小数）
        r = self.reg.api_img_code(0.123)
        log.info("执行认证接口结果为：{}".format(r.status_code))
        self.assertEqual(200, r.status_code)
        # 获取短信验证码#
        r = self.reg.api_phone_code(phone, img_code)
        log.info("执行获取短信验证码接口结果为：{}".format(r.text))
        self.assertIn('发送成功', r.text)
        # 注册
        r = self.reg.api_register(phone, password, img_code, phone_code)
        log.info("执行注册接口结果为：{}".format(r.text))
        self.assertIn('注册成功', r.text)
        # 登录
        r = self.reg.api_login(phone, password)
        log.info("执行登录接口结果为：{}".format(r.text))
        self.assertIn('登录成功', r.text)
        # 认证
        r = self.approve.api_approve()
        log.info("执行认证接口结果为：{}".format(r.text))
        self.assertIn('提交成功', r.text)
        # 开户
        r = self.approve.api_trust()
        log.info("执行开户接口结果为：{}".format(r.text))
        self.assertIn('form', r.text)
        result = html_parser(r)
        # 三方开户
        r = self.session.post(url=result[0], data=result[1])
        log.info("执行三方开户接口结果为：{}".format(r.text))
        self.assertIn('OK', r.text)
        # 获取短信验证码
        r = self.approve.api_img_code(random)
        log.info("执行获取短信验证码结果为：{}".format(r.status_code))
        self.assertEqual(200, r.status_code)
        # 充值
        r = self.approve.api_recharge(img_code)
        log.info("执行充值接口结果为：{}".format(r.text))
        self.assertIn('form', r.text)
        result = html_parser(r)
        # 三方充值
        r = self.session.post(url=result[0], data=result[1])
        log.info("执行三方充值接口结果为：{}".format(r.text))
        self.assertIn('OK', r.text)
        # 请求投资
        r = self.tender.api_tender(amount)
        log.info("执行请求投资接口结果为：{}".format(r.text))
        self.assertIn('form', r.text)
        result = html_parser(r)
        # 投资
        r = self.session.post(url=result[0], data=result[1])
        log.info("执行投资接口结果为：{}".format(r.text))
        self.assertIn('OK', r.text)
